package com.cd.learn.cdlearn.algorithm;

import com.cd.learn.cdlearn.algorithm.util.CheckAlgorithmUtil;
import org.junit.Test;

/**
 * @Author: seven
 * @Date: 2021/4/29 下午3:41
 * <p>
 * 选择排序
 */
public class SelectSort extends CheckAlgorithmUtil {

    /**
     * 选择排序：第一次遍历所有取最小数放在第一位，第二次遍历，取除第一位数之外的数的最小数放在第二次。。。。。类似冒泡
     *
     */
    @Override
    @Test
    public void test() {
        super.test();
    }


    @Override
    public void sort(int[] array) {
        for (int i = 0; i < array.length; i++) {
            loop(array,i);
        }
    }

    /**
     * 每次循环拿传入座标的值一直比较到数组最后一位，并与最小的值交换
     * @param array 数组
     * @param index
     */
    public static void loop(int[] array,int index) {
        int minValue = array[index];
        int minValueIndex = index;
        for (int i = index+1; i < array.length; i++) {
            if(minValue > array[i]){
                minValue = array[i];
                minValueIndex = i;
            }
        }
        exchange(array,index,minValueIndex);
    }



}
